Facilitating the Sale of Expiring Commodities

ABSTRACT

A computer-implemented method comprising receiving, on a server, an offer for sale from a computing device related to a retailer, the offer for sale including a description of an expiring commodity and a discounted price of the expiring commodity; identifying, by the server, one or more consumers as targeted consumers by comparing the offer for sale with purchase preferences previously provided by consumers; sending, from the server, a currently unsolicited notification to a computing device related to at least one of the targeted consumers, the currently unsolicited notification including information related to the offer for sale; and receiving, on the server, from the computing device related to the targeted consumer, a purchase indication related to the expiring commodity.

CROSS REFERENCE TO RELATED APPLICATIONS

This application claims priority to U.S. Provisional Application62/052,148, filed on Sep. 18, 2014, the entire content of which isincorporated herein by reference.

TECHNICAL FIELD

This invention relates to facilitating the sale expiring commodities.

BACKGROUND

Expiring commodities diminish in value over time and can be sold for adiscount from the original price.

SUMMARY

In one aspect, a computer-implemented method includes receiving, on aserver, an offer for sale from a computing device related to a retailer.The offer for sale includes a description of an expiring commodity and adiscounted price of the expiring commodity. The computer-implementedmethod also includes identifying, by the server, one or more consumersas targeted consumers by comparing the offer for sale with purchasepreferences previously provided by consumers. The computer-implementedmethod also includes sending, from the server, a currently unsolicitednotification to a computing device related to at least one of thetargeted consumers. The currently unsolicited notification includesinformation related to the offer for sale. The computer-implementedmethod also includes receiving, on the server, from the computing devicerelated to the targeted consumer, a purchase indication related to theexpiring commodity.

Implementations can include one or more of the following features.

In some implementations, at least one of the computing device related tothe retailer and the computing device related to the targeted consumeris located remotely from the server.

In some implementations, the offer for sale includes a regular price ofthe expiring commodity.

In some implementations, each of the purchase preferences includes anexpiring commodity and a value threshold.

In some implementations, comparing the offer for sale with purchasepreferences of the one or more consumers includes determining whetherthe expiring commodity of the offer for sale matches the expiringcommodity of each of the purchase preferences. Comparing the offer forsale with purchase preferences of the one or more consumers alsoincludes determining whether the discounted price of the offer for salesatisfies the value threshold of each of the purchase preferences.

In some implementations, one or more of the purchase preferencesincludes a particular retailer.

In some implementations, comparing the offer for sale with purchasepreferences of the one or more consumers includes determining whetherthe retailer associated with the offer for sale matches the particularretailer of the one or more purchase preferences.

In some implementations, the currently unsolicited notification includesone or more of a name of the retailer, an address of the retailer, thedescription of the expiring commodity, the discounted price of theexpiring commodity, a regular price of the expiring commodity, and aquantity field.

In some implementations, the currently unsolicited notification includesa purchase code related to a consumer preference.

In some implementations, the currently unsolicited notification includesa countdown timer that represents a time limit for the targeted customerto send the purchase indication.

In some implementations, the countdown timer can be temporarily frozenone or more times.

In some implementations, a credit is provided in order to temporarilyfreeze the countdown timer.

In some implementations, the purchase indication is provided by amessage from the targeted consumer.

In some implementations, the computer-implemented method also includesupdating the discounted price of the expiring commodity.

In some implementations, the discounted price of the expiring commodityis updated based on an expiration date of the expiring commodity.

In some implementations, the expiring commodity is edible.

In some implementations, the expiring commodity is a material item.

In some implementations, the expiring commodity is a piece of clothing,an electronic item, or a vehicle.

In some implementations, the expiring commodity is a non-edible,non-material item.

In some implementations, the expiring commodity is a virtual commodity.

In some implementations, the virtual commodity is software.

In some implementations, the expiring commodity is a location thatprovides lodging.

In some implementations, the location that provides lodging is a hotelroom.

In some implementations, the expiring commodity is a ticket.

In some implementations, the ticket is a travel ticket.

In some implementations, the travel ticket is an airline ticket, a trainticket, a ferry ticket, or a bus ticket.

In some implementations, the ticket is an entertainment event ticket.

In some implementations, the entertainment event ticket is a theaterticket, a concert ticket, a sporting even ticket, or a movie ticket.

In some implementations, the expiring commodity is a reservation forfood consumption or entertainment.

In some implementations, the reservation is a dining reservation.

In some implementations, the currently unsolicited notification is apush notification.

In some implementations, at least one of the computing device related tothe retailer and the computing device related to the targeted consumeris a smartphone.

In some implementations, the currently unsolicited notification is onlysent to computing devices related to targeted consumers who arespecified in the offer for sale.

In some implementations, the currently unsolicited notification is onlysent to computing devices related to targeted consumers whose purchasepreferences have identified the retailer as an approved retailer.

In some implementations, the currently unsolicited notification is notsent to computing devices related to targeted consumers whose purchasepreferences have identified the retailer as a blocked retailer.

In some implementations, the computer-implemented method also includesreceiving, on the server, from the computing device related to theretailer, information related to one or more expiring commodities thatthe retailer has previously sold, has in-stock, or intends to purchase.

In some implementations, the computer-implemented method also includesreceiving, on the server, from the computing device related to theretailer, information related to past, existing, or prospectivecustomers of the retailer.

In another aspect, a system includes a server that includes a memoryconfigured to store instructions. The server also includes a processorto execute the instructions to perform a method. The method includesreceiving, on the server, an offer for sale from a computing devicerelated to a retailer. The offer for sale includes a description of anexpiring commodity and a discounted price of the expiring commodity. Themethod also includes identifying, by the server, one or more consumersas targeted consumers by comparing the offer for sale with purchasepreferences previously provided by consumers. The method also includessending, from the server, a currently unsolicited notification to acomputing device related to at least one of the targeted consumers. Thecurrently unsolicited notification includes information related to theoffer for sale. The method also includes receiving, on the server, fromthe computing device related to the targeted consumer, a purchaseindication related to the expiring commodity.

Implementations can include one or more of the following features.

In some implementations, the system also includes a matching engine thatresides on the server. The matching engine is configured to determinewhether the expiring commodity of the offer for sale matches theexpiring commodity of each of the purchase preferences. The matchingengine is also configured to determine whether the discounted price ofthe offer for sale satisfies the value threshold of each of the purchasepreferences.

In some implementations, the system also includes a pricing engine thatresides on the server. The pricing engine is configured to update thediscounted price of the expiring commodity.

In some implementations, the pricing engine considers data related toone or more of foreign exchange market trends, financial market trends,economic trends, news and events, regional and sub-regional trends,global trends, commodity pricing, commodity quality, nature dependentanalysis, specific sales by business, calendar based holidays/events,religious trends, cultural trends, commodity demand, inventory, custombusiness-specified validation, custom business-specified rules,commodity pricing history, commodity purchase history, and sentimentanalysis.

In some implementations, the system also includes multiple instances ofthe pricing engine. The multiple instances of the pricing engine areconfigured to communicate with each other and share information.

In some implementations, no two instances of the pricing engine consideran exact same set of data.

In some implementations, the discounted price of the expiring commodityis updated based on an expiration date of the expiring commodity.

In another aspect, a computer program product tangibly embodied in aninformation carrier includes instructions that when executed by aprocessor perform a method including receiving, on a server, an offerfor sale from a computing device related to a retailer. The offer forsale includes a description of an expiring commodity and a discountedprice of the expiring commodity. The method also includes identifying,by the server, one or more consumers as targeted consumers by comparingthe offer for sale with purchase preferences previously provided byconsumers. The method also includes sending, from the server, acurrently unsolicited notification to a computing device related to atleast one of the targeted consumers. The currently unsolicitednotification includes information related to the offer for sale. Themethod also includes receiving, on the server, from the computing devicerelated to the targeted consumer, a purchase indication related to theexpiring commodity.

The details of one or more implementations of the invention are setforth in the accompanying drawings and the description below. Otherfeatures, objects, and advantages of the invention will be apparent fromthe description and drawings, and from the claims.

DESCRIPTION OF DRAWINGS

FIG. 1 is a system for facilitating a sale of expiring commodities.

FIG. 2 is an example of an interface used by a consumer to define apurchase preference.

FIG. 3 is a flow chart outlining a process for a consumer to purchase anexpiring commodity.

FIG. 4 is a flow chart outlining a process for a retailer to specify anoffer for sale for an expiring commodity that is sent to a consumer as apush notification.

FIG. 5 is a block diagram of the Pricing Engine of FIG. 4.

FIG. 6 is a flowchart of a process for purchasing an expiring commodity.

FIG. 7 is a block diagram of a computer system and associatedcomponents.

DETAILED DESCRIPTION

An expiring commodity is a commodity that diminishes in value over timeor is no longer sellable or useful after a particular time. As oneexample, the value of food at a grocery store diminishes in value overtime as the food becomes less fresh. The food is also no longer sellableor useful after a particular time (e.g., the expiration date of thefood). The food may be offered for sale initially at a particular price.However, as the expiration date of the food approaches, the grocerystore may choose to lower the price to motivate a consumer to purchasethe food before the expiration date, or else take the risk of the foodspoiling.

Some consumers may be willing to purchase the fresh food at the initialprice. However, other consumers may not be able to afford the initialprice or may instead prefer to wait for the food to be discounted. Someconsumers may want to purchase the food, but only if the price of thefood is below a particular threshold.

Typically, retailers who are in the business of selling expiringcommodities rely on in-store advertisements, flyers, or emails toannounce discounts. However, a consumer who would be willing to purchasethe expiring commodity may not become aware of the discount until it istoo late (e.g., until after the commodity has expired). Additionally,the consumer may only be interested in particular products, which may ormay not be in any advertised media and will require a great deal of timeto discover such deals, quantities, or availability.

FIG. 1 shows a system 100 for facilitating a sale of expiringcommodities by sending a currently unsolicited offer for sale totargeted consumers using push technology. Main Street Groceries is aretailer 102 that sells expiring commodities (e.g., food). One exampleof a food that the retailer 102 sells is USDA prime sirloin steak. Theretailer 102 may receive a large shipment of fresh steak from a supplieron July 1^(st). The fresh steak is initially priced at $9.99 per pound.Between July 1^(st) and July 3^(rd), the retailer 102 may sell amajority of the fresh steak as customers stock up for holiday cookouts.However, come July 4^(th), there are still 20 pounds of steak remaining.The expiration date of the steak is approaching, and the retailer 102might not expect there to be a high demand for steak in the coming days.

An employee 104 of the retailer 102 is in charge of determining sellingprices for food. The employee 104 wants to recover at least a portion ofthe cost of the steak before it goes bad. The employee 104 creates anoffer for sale 106 that includes a description and quantity of thecommodity 108 and the discounted price of the commodity 110. The offerfor sale 106 may also include the regular price of the commodity 112. Inthis example, the offer for sale 106 is for USDA Prime sirloin steak,the quantity of the commodity 108 is 20 pounds, and the price of thecommodity 110 is $3.99 per pound. The employee 104 defines the offer forsale 106 using a computing device 114. In some examples, the computingdevice 114 is a mobile computing device such as a cellular telephone ora smartphone.

The computing device 114 includes a transceiver that allows thecomputing device 114 to communicate wirelessly with a network 118. Aserver 120 is also in wireless communication with the network 118. Theemployee 104 transmits the offer for sale 106 to the server 120 via thenetwork 118 by selecting a “submit” button 116 on a display of thecomputing device 114. The server 120 receives and processes the offerfor sale 106. The server 120 then sends information related to the offerfor sale 106 to one or more targeted consumers (e.g., the targetedconsumer 122) via the network 118 using push technology. The targetedconsumers are determined according to purchase preferences 202 (shown inFIG. 2) that are predefined by consumers, as described in more detailbelow.

The targeted consumer 122 receives a push notification 124 on hiscomputing device 114 from the server 120 via the network 118. The pushnotification 124 is initiated by the server 120 and in some cases issent shortly after the offer for sale 106 is processed by the server120. The push notification 124 is a currently unsolicited notification.That is, the transmission of the push notification 124 is not initiatedby a timely request by the targeted consumer 122. Rather, the pushnotification 124 is initiated by the server 120 based on thepreviously-defined purchase preferences 202. The push notification 124includes information related to the offer for sale 106. In someexamples, the push notification 124 can include information related tothe commodity, information related to the retailer, and informationrelated to an available or desired quantity of the commodity to assistthe targeted consumer 122 in deciding whether to make a purchase. Thepush notification 124 can also provide various options for the targetedconsumer 122 to react to the push notification 124. For example, thepush notification 124 can include the name and address 126 of theretailer 102 that submitted the offer for sale 106, a description of thecommodity, a price of the commodity, a quantity field 128 for enteringin a desired quantity for purchase, a “yes” selection button 130, and a“no” selection button 132. If the targeted consumer 122 wants topurchase the steak, the targeted consumer 122 can send a purchaseindication. The targeted consumer 122 can enter a desired quantity inthe quantity field 128 and select the “yes” selection button 130. If thetargeted consumer 122 does not want to purchase the steak, the targetedconsumer 122 can either select the “no” selection button 132 or donothing.

FIG. 2 shows an example of an interface 200 used by a consumer to definea purchase preference 202. A purchase preference 202 is a set ofcriteria defined by the consumer that can be used to determine offersfor sale that the consumer may be interested in. The purchase preference202 includes a commodity 204 and a value threshold 206. In someexamples, the purchase preference 202 also includes a particularretailer. The consumer can manually enter the commodity 204 and thevalue threshold 206 into the computing device 114. Alternatively, theconsumer can select the commodity 204 from a list of commodities. Theconsumer can also access a website of a particular retailer and selectthe commodity 204 from the website.

In this example, the consumer has defined a purchase preference 202 forUSDA Prime sirloin steak at a value threshold of $4.99 per pound. Thatis, the consumer has indicated that he is interested in an offer forsale of USDA Prime sirloin steak if the price is $4.99 per pound orless. In this example, because the purchase preference 202 does notinclude a particular retailer, the consumer has indicated that he isinterested in an offer for sale from any retailer that meets hispurchase preference 202 criteria. The consumer transmits the purchasepreference 202 to the server 120 via the network 118 by selecting a“submit” button 208 on the display of the computing device 114.Referring back to FIG. 1, the targeted consumer 122 who received thepush notification 124 may have previously submitted the purchasepreference 202 of FIG. 2.

FIG. 3 shows a flow chart 300 outlining a process for a consumer topurchase an expiring commodity through an offer for sale that is sent tothe consumer using push technology. A consumer defines a purchasepreference 302, e.g., using the interface 200 shown in FIG. 2. Thepurchase preference includes a commodity and a value threshold. Thepurchase preference is sent to an Acquisition Engine 304. TheAcquisition Engine 304 resides on the server 120 (shown in FIGS. 1 and2). The Acquisition Engine 304 considers data from a number of sourcesto determine whether the value threshold for the particular commodity isreasonable 306 in a similar manner as described below with reference tothe Pricing Engine 404 (shown in FIGS. 4 and 5). If the AcquisitionEngine 304 determines that the value threshold for the commodity isreasonable, the purchase preference is stored 308 on the server 120. Ifthe Acquisition Engine 304 determines that the value threshold for thecommodity is not reasonable, the Acquisition Engine 304 offers toprovide the consumer with guidance 310. If the consumer chooses toaccept the guidance, the Acquisition Engine 304 provides value thresholdguidance 312. For example, the Acquisition Engine 304 may suggest anappropriate value threshold for the particular commodity based onstatistical sales data. The consumer can then restart the process andidentify a purchase preference 302 using the suggested value threshold.If the consumer chooses not to accept the guidance, the purchasepreference is stored 308 on the server 120.

In some implementations, information related to commodities in thepurchase preference is stored. The information that can be stored caninclude commodity attributes (e.g., clothing sizes). The informationthat can be stored can also include purchase trends related tocommodities. For example, the process may recognize that the consumerhas purchased a particular commodity at particular times (e.g., theconsumer has purchased flowers on Valentine's Day the past three years).This stored information can be accessed when the consumer defines futurepurchase preferences.

In some implementations, the purchase preference includes an option forthe consumer to enable automatic purchase of a commodity in an offer forsale that matches the criteria of the purchase preference. The automaticpurchase option can include a feature that allows the consumer to set adate and time range indicating when the automatic purchase option is tobe enabled. Automatic purchase is defined as a purchase that does notrequire a confirmation from the consumer prior to effectuating thepurchase. After the purchase preference is stored 308, the purchasepreference is pushed to the Matching Engine 314. The Matching Enginecompares 316 the purchase preference to offers for sale from retailers(e.g., the offer for sale 106 from the retailer 102 of FIG. 1) to findmatching commodities. That is, the Matching Engine identifiescommodities included in offers for sale that fit the criteria of thepurchase preference defined by the consumer, namely, the particularcommodity and the value threshold.

If matches are found 318 by the Matching Engine, the consumer isnotified 320. The consumer receives a push notification 322 of the offerfor sale that matches the consumer's purchase preferences. In someimplementations, the consumer receives multiple push notifications 322,each of which identifies an offer for sale that matches the consumer'spurchase preferences. A consumer who receives a push notification of anoffer for sale that matches the consumer's purchase preference isreferred to as a targeted consumer (e.g., targeted consumer 122 of FIG.1). The push notification can be sent in a variety of forms, e.g., as aninstant message, a text message, an email, or some other electroniccommunication medium. The push notification can also be sent to awebsite, and the consumer can access the push notification by accessingthe website.

The push notification (e.g., the push notification 124 of FIG. 1)includes information related to the matching offer for sale. The pushnotification can include the name and address of the retailer thatsubmitted the matching offer for sale, a description of the commodity, aprice of the commodity, a quantity field for entering in a desiredquantity for purchase, a “yes” selection button, and a “no” selectionbutton. In some implementations, a further authorization and/orauthentication of the consumer and the intent to complete the purchasemay be used (e.g., an alphanumeric code request to be replied to theserver 120, fingerprint identification, facial recognition, etc.).

In some implementations, the push notification includes a countdowntimer that represents a time limit for the consumer to respond 324 tothe push notification. The consumer can purchase the commodity 332included in the offer for sale up until the time limit expires 326. Topurchase the commodity 332, the consumer enters a desired quantity inthe quantity field and selects the “yes” selection button. In someimplementations, changing the quantity changes the price of thecommodity. If the time limit expires 326, the deal ends 328 and theoffer for sale can no longer be accepted by the consumer. In someimplementations, such as when the push notification is sent as an email,the consumer can purchase the commodity 332 by responding to the email.In some implementations, such as when the push notification is sent to awebsite, the consumer can purchase the commodity 332 by interacting withthe website.

In some implementations, such as when the consumer enables automaticpurchase of a commodity in an offer for sale that matches the criteriaof the defined purchase preference, the commodity is automaticallypurchased when the consumer receives the push notification. In suchcases, the consumer does not need to interact with the push notificationin order to purchase the commodity. When automatic purchase is enabled,the countdown timer can be disabled.

In some implementations, if the consumer shows intent to purchase 330before the time limit expires 326, the offer for sale may be left openbeyond the expiration of the time limit. For example, the consumer mayindicate that he intends to purchase 330 the commodity, but he may nothave finalized the purchase. In such a case, the offer for sale is leftopen for an additional length of time to give the consumer theopportunity to finalize the purchase.

In some implementations, the countdown timer is not started until theconsumer shows intent to purchase 330. In such a case, the offer forsale is locked for acceptance by the consumer for the duration of thecountdown timer. In other words, for the duration of the countdowntimer, the consumer is guaranteed the opportunity to accept the offerfor sale without the risk of the offered commodity being sold tosomebody else.

In some implementations, the push notification includes a snooze featurethat the consumer can utilize to extend the time limit or temporarilyfreeze the countdown timer. For example, if the consumer needs more timeto decide whether he wants to purchase the commodity, he can select a“snooze” button that is included in the push notification. The “snooze”button can be accompanied by a user-definable field that represents thelength of time of the snooze. The timer and snooze functions can bespecified by the retailer in the retailer's preferences, as described inmore detail below.

In some implementations, the consumer can utilize the snooze featuremultiple times to repeatedly freeze the countdown timer. The consumerprovides a credit in order to temporarily freeze the countdown timer.The credit may be in the form of currency or award points accumulated byperforming specific applications within the ecosystem.

In some implementations, rather than purchasing the commodity 332, theconsumer can respond to the push notification with a counteroffer, whichthe retailer can either decline or accept. In some implementations, theconsumer can define new purchase preferences when responding to the pushnotification. In some implementations, the consumer and the retailer canengage in a negotiation for a purchase price (e.g., via video, audio,email, text message, instant message, etc.).

In some implementations, the push notification includes an option tosave the offer for sale for later (e.g., for a later acceptance). Ratherthan purchasing the commodity 332 immediately, the consumer can elect tosave the offer for sale for later. The consumer can then purchase thecommodity 332 at a later time.

In some implementations, the consumer can forward the offer for sale toother people. The ability to forward the offer for sale may be limitedbased on the quantity of the commodity related to the offer for salethat is available. In some implementations, such as when a commodity issold as a set (e.g., in the context of tickets to an event), theconsumer can purchase less than all of the quantity of the commodity andforward the remaining quantity to other people. In some implementations,the retailer can limit the ability of the offer for sale to beforwarded. In some implementations, a notification related to theforwarded offer for sale includes a countdown timer. The countdown timercan have a longer time limit, a shorter time limit, or the same timelimit as the original offer for sale.

In some implementations, the consumer can post information related tothe purchase to a website, such as a social medial website. In the casewhere there is a remaining quantity of the commodity available, theoffer for sale itself can be posted to the website for acceptance byother potential consumers. The posted offer for sale can also include acountdown timer.

In some implementations, the consumer receives credit for posting orforwarding an offer for sale or for posting information related to apurchase. The credit may be in the form of currency or award points thatcan be used to make future purchases. In some implementations, thecredit can be used to utilize the snooze feature to freeze the countdowntimer.

In some implementations, the push notification includes comparablepricing of the commodity from other sources. For example, the pushnotification can include the price of the commodity from various stores.The push notification can also include links to those stores. Theconsumer can interact with the links to view additional informationrelated to the commodity.

In some implementations, the purchase preference includes one or moreconsumer preferences that define additional information related to thecriteria. For example, the consumer preferences can include aconsumer-defined list of approved retailers from whom the consumer wantsto receive push notifications that include information related to offersfor sale. Similarly, the consumer preferences can include aconsumer-defined list of blocked retailers from whom the consumer doesnot want to receive any push notifications. In some implementations, theconsumer can specify one or more specific persons (e.g., a particularsales representative) from a particular retailer from whom the consumerdoes not want to receive any push notifications. In someimplementations, the consumer can define time and/or quantity limits onpush notifications received from the one or more specific persons.

In some implementations, the consumer preferences can include aconsumer-defined list of one or more specific persons (e.g., aparticular sale representative) from a particular retailer from whom theconsumer wants to receive all push notification. Such a feature mayrequire specific authorization from the consumer to allow the one ormore specific persons to send unconditional push notifications. Pushnotifications originating from the one or more specific persons bypassthe Matching Engine and are sent to the consumer without taking intoaccount the consumer's purchase preference and the offer for sale. Forexample, a consumer may be a frequent shopper at a particular retailstore. A sales person at the particular retail store may consistentlyhold certain items for the consumer that are suited for the consumer(e.g., clothing of a particular size and/or style). In the consumerpreferences, the consumer may specifically authorize the sales person tosend push notifications to the consumer without any limitations, therebybypassing the Matching Engine. In some implementations, the consumer candefine certain items that the sales person is authorized to send pushnotifications related to. In some implementations, one or morelimitations can be imposed on the sales person's ability to send pushnotifications to the consumer. For example, the consumer may specify aspecific window of time during which the sales person can send pushnotifications.

While we described a single consumer defining a single purchasepreference 302 and the single consumer being identified by the MatchingEngine, it should be understood that many consumers define one or morepurchase preference 302. The Matching Engine compares 316 purchasepreferences from multiple consumers to offers for sale from retailers,and all consumers who have matching purchase preferences are identifiedas targeted consumers. The targeted consumers then receive pushnotifications 322.

FIG. 4 shows a flow chart 400 outlining a process for a retailer tospecify an offer for sale for an expiring commodity that is sent to aconsumer using push technology. Some portions of the flow chart 400 aresimilar to portions of the flow chart 300 of FIG. 3, although this flowchart 400 is from the retailer's perspective.

A retailer creates and submits an offer for sale 402. The offer for sale(e.g., the offer for sale 106 of FIG. 1) can be defined using thecomputing device 114. The offer for sale includes a description andquantity of a commodity and a discounted price of the commodity. Theoffer for sale can also include the regular price of the commodity. Anemployee of the retailer can manually enter the information related tothe offer for sale into the computing device 114.

The offer for sale can also include retailer preferences. In someimplementations, the retailer preferences include information related tothe lifespan of the offer for sale. For example, the retailer canspecify a time limit that represents the amount of time a consumer hasto accept the offer for sale before it expires. The retailer can alsospecify whether the offer for sale includes a snooze feature, asdescribed above. The retailer can define parameters of the snoozefeature, such as maximum allowable snoozes and durations.

The offer for sale is sent to a Pricing Engine 404. The Pricing Engine404 resides on the server 120 (shown in FIGS. 1 and 2). The PricingEngine 404 considers data from a number of sources to determine whetherthe discounted price of the commodity is reasonable 406, as described inmore detail below. If the discounted price is not reasonable, thePricing Engine 404 suggests a price 408 based on the same data. In someimplementations, the suggested price can be either accepted or rejectedby the retailer. If the suggested price is accepted, the price isupdated. In some implementations, the Pricing Engine 404 automaticallyupdates the price without requiring further input from the retailer, asdetermined by the retailer preferences.

If participating in the workflow, the Pricing Engine 404 determines thatthe price is reasonable, the offer for sale is stored 410 on the server120. The offer for sale is then pushed to the Matching Engine 412. TheMatching Engine compares 414 the offer for sale to purchase preferencesto find targeted consumers. That is, the Matching Engine identifies oneor more consumers who have submitted a purchase preference that includescriteria that the offer for sale fits. In particular, the MatchingEngine determines whether the particular commodity and the valuethreshold included in a purchase preference fits the description,quantity, and discounted price included in the offer for sale.

If a match is found 416 by the Matching Engine, a push notification issent to one or more of the targeted consumers 418. The push notification(e.g., the push notification 124 of FIG. 1) includes information relatedto the offer for sale that matches the consumer's purchase preference.The push notification can include the name and address of the retailerthat submitted the offer for sale, a description of the commodity, aquantity field for entering in a desired quantity for purchase, a “yes”selection button, and a “no” selection button.

In some implementations, the retailer can cause the Matching Engine toonly identify certain consumers as targeted consumers. For example, theretailer can specify certain consumers in the retailer preferences whoare available to the Matching Engine when identifying consumers astargeted consumers. As such, only the specified consumers receive a pushnotification that includes information related to the offer for sale.For example, if a consumer is in a specific group of consumers whopurchase a high volume from a retailer, the consumer may be included ina subset of consumers who the retailer may direct unique offers andspecial sales to. Such unique offers and special sales are not availableto consumers who are included in the subset.

If a targeted consumer indicates intent to purchase 420 the commodity, apurchase code is sent to the targeted consumer 422. If the targetedconsumer replies to the push notification with the purchase code 424,the targeted consumer purchases the commodity 426. For example, thetargeted consumer may enter the purchase code into a field included inthe push notification. In some implementations, the targeted consumermay enter a desired quantity in the quantity field of the pushnotification and select the “yes” selection button to finalize thepurchase of the commodity.

In some implementations, a credit card associated with the targetedconsumer is charged when the targeted consumer purchases the commodity426. The targeted consumer's credit card information can be previouslyentered and stored on the server 120 such that the targeted consumerdoes not have to enter his credit card information at the time ofpurchase. In some implementations, the targeted consumer can manuallyenter his credit card information when he purchases the commodity 426.In some implementations, the credit card or banking information may bestored on the targeted consumer's computing device (e.g., the computingdevice 114 of FIGS. 1 and 2). In some implementations, the computingdevice is an iPhone™ that utilizes Apple Pay™, and the targeted consumercan use the stored payment information to pay for the commodity. In someimplementation, the credit card associated with the targeted consumer ischarged via a communication with an external system associated with thecustomer (e.g., a bank account, a credit card account, etc.).

In some implementations, the Matching Engine is unable to find anytargeted (e.g., matching) consumers. Alternatively, the Matching Enginemay have found targeted consumers, but none of the targeted consumersindicated intent to purchase the commodity or responded to the pushnotification with the purchase code. In such cases, the offer for salecan be advertised with a new price 428. For example, the offer for salecan be advertised with a new price 428 on a website or a computingdevice. A computing device application (e.g., such as a smartphoneapplication) can be associated with the process outlined by theflowcharts 300 and 400 of FIGS. 3 and 4, respectively. The new price istypically less than the regular price of the commodity, but greater thanthe discounted price of the commodity that was offered to the targetedconsumers. When the offer for sale is advertised with a new price 428,the retailer is notified 430 so that the retailer can adjust the priceof the commodity accordingly.

The retailer is also notified 430 when a targeted consumer purchases thecommodity. The retailer and the targeted consumer can then effectuatethe purchase in a number of ways. For example, the targeted consumer canpick up the purchased commodity at one of the retailer's stores. In someimplementations, the consumer is associated with an identification code,and the consumer must present the identification code at the retailer'sstore in order to pick up the purchased commodity. Alternatively, theretailer can ship the purchased commodity to the targeted consumer.After a purchase occurs, the retailer can write a review for thetargeted consumer and the target consumer can write a review for theretailer. The review can be submitted to the server 120, and informationrelated to the review can be accessed by other consumers and retailers.

In some implementations, before, during, or after a retailer specifiesan offer for sale for an expiring commodity, the retailer is presentedwith information from a dashboard provided through an applicationassociated with the process outlined by the flow chart 400. Thedashboard can include information related to purchasing trends ofconsumers. The dashboard can assist the retailer in determining aparticular commodity to sell, a price for which to sell the particularcommodity, and an optimal time at which to sell the particularcommodity. In some implementations, the process outlined by the flowchart 400 causes the dashboard to notify the retailer when an optimalsale opportunity arises.

While we described a single retailer submitting a single offer for sale402, it should be understood that many retailers submit one or moreoffers for sale 402. The Matching Engine may compare 414 purchasepreferences from multiple consumers to offers for sale from multipleretailers.

The Matching Engine of FIGS. 3 and 4 may not immediately find a matchbetween a purchase preference and an offer for sale. The MatchingEngine, which resides on the server 120 (shown in FIG. 1), continuouslymonitors purchase preferences defined by consumers and offers for salesubmitted by retailers in an attempt to identify matches. For example, aconsumer may define a purchase preference that includes criteria that donot match any offers for sale stored on the server 120. Accordingly,upon defining the purchase preference, the consumer would not receive apush notification. At a later time, a retailer may submit an offer forsale that matches the criteria of the purchase preference. When theoffer for sale is submitted, the Matching Engine identifies a matchbetween the offer for sale and the purchase preference. The consumer(who is now a targeted consumer) would receive a push notificationshortly after the offer for sale is submitted. In this way, the pushnotification substantially instantaneously notifies the targetedconsumer of the offer for sale of interest.

FIG. 5 shows a block diagram of the Pricing Engine 404 of FIG. 4. Asdescribed above, the Pricing Engine 404 resides on the server 120 andcan consider data from one or more of a number of sources to determinewhether the discounted price of the commodity included in the offer forsale is reasonable. If the Pricing Engine 404 determines that thediscounted price of the commodity is not reasonable, the Pricing Engine404 updates the price in the offer for sale based on the data from thevarious sources.

The Pricing Engine 404 can include one or more subcomponents. Eachsubcomponent can consider data related to one or more of foreignexchange market trends, financial market trends, economic trends, newsand events, regional and sub-regional trends, global trends, commoditypricing, commodity quality, nature dependent analysis, specific sales bybusiness, calendar based holidays/events, religious trends, culturaltrends, commodity demand, inventory, custom business-specifiedvalidation, custom business-specified rules, commodity pricing history,commodity purchase history, and sentiment analysis. In someimplementations, each subcomponent of the Pricing Engine 404 considersdata related to each of the items listed above.

In some implementations, the Pricing Engine 404 includes one, multiple,or no instances of each component. In some implementations, multipleinstances of the Pricing Engine 404 reside on the server 120. In someimplementations, the multiple instances of the Pricing Engine 404 canhave entirely discrete tasks. Each tasks can be related to the itemsthat correspond to the subcomponents of the Pricing Engine 404. In someimplementations, the multiple instances of the Pricing Engine 404 cansame one or more similar tasks. For example, two instances of thePricing Engine 404 may consider the exact same set of data related tothe subcomponents of the Pricing Engine 404. That is, each instance ofthe Pricing Engine 404 may consider data related to each and every oneof the items related to the subcomponents listed above. Alternatively,in some examples, one instance of the Pricing Engine 404 may considerdata related to a subset of the items related to the subcomponentslisted above, and another instance of the Pricing Engine 404 mayconsider data related to a different subset of the items related to thesubcomponents. In some examples, multiple instances of the PricingEngine 404 may consider non-identical sets of data, while consideringsome common data. In some implementations, the multiple instances of thePricing Engine 404 are configured to communicate with each other andshare information. In some implementations, the Pricing Engine 404considers information different than the items listed above.

Regarding foreign exchange market trends, exchange rates fluctuateregularly and can affect purchase values between a time when theretailer purchased the commodity and a time when the retailer sells thecommodity to a consumer. The change in value of the commodity assiststhe Pricing Engine 404 in determining an appropriate price for thecommodity.

Regarding financial market trends, public perception of future incomecan affect daily purchase habits and behaviors of consumers. Forexample, if the stock market is relatively low, the average consumer islikely hurt financially and is looking harder than ever for discounts.Thus, financial market trends can indirectly influence what a consumeris willing to pay for a commodity. The Pricing Engine 404 considersthese trends in determining an appropriate price for the commodity.

Regarding economic trends, global finance can affect sales to Americanconsumers. For example, if the economy in a particular country is down,small businesses may be unable to survive. This can result in a highdemand for certain commodities that small businesses sell. The PricingEngine 404 considers these trends in determining an appropriate pricefor the commodity.

Regarding news and events, local news and events can affect howconsumers make purchases. For example, if a generally festive eventoccurs in a particular region (e.g., a local sporting team wins achampionship), consumers from that region are likely to celebrate. Thoseconsumers may want to purchase food for parties. Because demand for suchcommodities is relatively high, the Pricing Engine 404 can determinethat the price for these commodities should be higher than usual.

Regarding regional and sub-regional trends, global events can affect howconsumers make purchases on a global scale in a similar way as localnews and events.

Regarding global trends, current events can affect commodity pricing.For example, during times of conflict in a particular area, somecommodities may not be sold in that area. Alternatively, the demand forcommodities in other areas can be affected. The Pricing Engine 404considers these trends in determining an appropriate price forcommodities.

Regarding commodity pricing, price trends allow for historical data topredict a commodity's value in the future. For example, if a particularcommodity is steadily increasing in value due to low supply, the PricingEngine 404 can use this information to determine an appropriate pricefor the commodity.

Regarding commodity quality, while some commodities are subjective inquality, others are not. For example, in the context of food, thequality of the food has an impact on what a consumer is willing to payfor it. As such, the Pricing Engine 404 can consider the quality of thefood (e.g., as specified by the retailer) to determine an appropriateprice for the food.

Regarding nature dependent analysis, natural disasters can affect thedemand for a commodity. For example, a drought may affect the amount ofproduce that is available in a particular region, resulting in higherdemand for the produce. As such, the Pricing Engine 404 can determinethat the price for the produce should be higher than usual.

Regarding specific sales by business, the retailer can specify a customsale price for a particular commodity. The Pricing Engine 404 can usethis information to determine an appropriate price for the commodity.

Regarding calendar-based holidays/events, certain holidays and eventsare associated with particular purchasing trends, resulting in thedemand for certain commodities rising. The Pricing Engine 404 canconsider these trends to determine an appropriate price for thecommodity.

Regarding religious trends, religious holidays are associated withparticular purchasing trends, resulting in the demand for certaincommodities rising. The Pricing Engine 404 can consider these trends todetermine an appropriate price for the commodity.

Regarding cultural trends, certain cultures follow specific trends andcustomers leading to a rise in particular commodities, resulting in thedemand for those commodities rising. The Pricing Engine 404 can considerthese trends to determine an appropriate price for the commodity.

Regarding commodity demand, the demand for a commodity is typicallyrelated to the price that a consumer is willing to pay for thecommodity. The Pricing Engine 404 can consider the demand for acommodity to determine an appropriate price for the commodity.

Regarding inventory, a retailer can specify the quantity of a commoditythat is available and define pricing rules that are based on thequantity. The Pricing Engine 404 can consider the available quantity andthe defined rules to determine an appropriate price for the commodity.

Regarding custom business-specified validation and custombusiness-specified rules, a retailer can specify custom rules related toa commodity, and the Pricing Engine 404 can consider these rules todetermine an appropriate price for the commodity.

Regarding commodity pricing and purchase history, information related tohow much consumers typically pay for a particular commodity at aparticular time can be considered by the Pricing Engine 404 and used todetermine an appropriate price for the commodity.

Regarding sentiment analysis, in some cases, the media can have a greateffect on how consumers view the value of a commodity. For example, ifthe media publicizes negative or positive information about a particularcommodity, a consumer's desire to purchase the commodity can bedecreased or increased. This, in turn, affects what the consumer iswilling to pay for the commodity. The Pricing Engine 404 can considerthis information to determine an appropriate price for the commodity.

The Pricing Engine 404 continuously monitors the discounted price of thecommodity included in the offer for sale in light of the data from thevarious sources to determine whether the price continues to bereasonable. For example, as time passes, the commodity diminishes invalue. In some cases, the commodity diminishes in value until it is nolonger sellable or useful. The Pricing Engine 404 takes this intoaccount and can continuously update the discounted price of thecommodity accordingly. For example, if a container of yogurt has anexpiration date in ten days, its value at five days from the expirationdate can be viewed as lower than its value five days prior. The value ofthe container of yogurt can continue to depreciate until the date ofexpiration occurs, at which time the value may be zero. The PricingEngine 404 may be utilized to automatically update the sale price basedon a predetermined depreciation scale as recommended by the PricingEngine 404. In some implementations, the Pricing Engine 404 may becustomized by the retailer to a custom depreciation scale over time.Such customization can be defined in the retailer preferences. In someimplementations, the Pricing Engine 404 may be deactivated entirely anda non-depreciating sale price may be pushed to the Matching Engine.

In some implementations, the retailer or the Pricing Engine 404 mayreverse the depreciation scale. As such, the price of the commodity mayappreciate as the date of expiration approaches. For example, if an itemsuch as a new yet-to-be-released phone is being sold at a pre-releaseprice, which the retailer elects to sell a set volume of at alower-than-retail price, the price of the item may increase on a setscale and approach the retail price on a particular date, as defined inthe retailer preferences.

The retailer has control over some aspects of the Pricing Engine 404. Asdescribed above, the offer for sale can include retailer preferences. Insome implementations, the retailer preferences include informationrelated to the settings of the Pricing Engine 404. The retailerpreferences can override some operations of the Pricing Engine 404. Forexample, the retailer preferences can specify that the Pricing Engine404 cannot price the commodity below a particular amount. The retailerpreferences can also specify the rate of depreciation of the commodity.

As the discounted price of the commodity changes, the Matching Enginemay identify additional matches between corresponding offer for sale andpurchase preferences of consumers.

FIG. 6 shows an example process 600 for purchasing an expiringcommodity. The process 600 can be performed, e.g., by the system 100 forfacilitating a sale of expiring commodities as shown in FIG. 1. In step610, the process receives an offer for sale from a computing device of aretailer. For example, the offer for sale 106 can be received on theserver 120 from the computing device 114 of the retailer 104, as shownin FIG. 1. The offer for sale can include a description of an expiringcommodity and a discounted price of the expiring commodity. In step 620,the process identifies one or more consumers as targeted consumers. Forexample, the one or more consumers can be identified as targetedconsumers, e.g., targeted consumer 122, by the server 120. The server120 can identify the one or more consumers as targeted consumers bycomparing the offer for sale with purchase preferences previouslyprovided by consumers, e.g., purchase preferences 202, as shown in FIG.2. In step 630, the process sends a currently unsolicited notificationto a computing device of at least one of the targeted consumers. Forexample, the currently unsolicited notification can be sent from theserver 120 to the computing device 114 of the targeted consumer 122. Thecurrently unsolicited notification can include information related tothe offer for sale 106. The currently unsolicited notification can be apush notification sent using push technology. In step 640, the processreceives, from the computing device of the targeted consumer, a purchaseindication related to the expiring commodity. For example, the purchaseindication can be received on the server 120 from the computing device114 of the targeted consumer 122.

FIG. 7 shows an example of a computing device 700 and a mobile computingdevice 750 that can be used to implement the techniques described inthis disclosure. For example, the computing device 700 and/or the mobilecomputing device 750 could be the computing device 114 shown in FIGS. 1and 2. The computing device 700 is intended to represent various formsof digital computers, such as laptops, desktops, workstations, personaldigital assistants, servers, blade servers, mainframes, and otherappropriate computers. The mobile computing device 750 is intended torepresent various forms of mobile devices, such as personal digitalassistants, cellular telephones, smart-phones, and other similarcomputing devices. The components shown here, their connections andrelationships, and their functions, are meant to be examples only, andare not meant to be limiting.

The computing device 700 includes a processor 702, a memory 704, astorage device 706, a high-speed interface 708 connecting to the memory704 and multiple high-speed expansion ports 710, and a low-speedinterface 712 connecting to a low-speed expansion port 714 and thestorage device 706. Each of the processor 702, the memory 704, thestorage device 706, the high-speed interface 708, the high-speedexpansion ports 710, and the low-speed interface 712, are interconnectedusing various busses, and may be mounted on a common motherboard or inother manners as appropriate. The processor 702 can process instructionsfor execution within the computing device 700, including instructionsstored in the memory 704 or on the storage device 706 to displaygraphical information for a GUI on an external input/output device, suchas a display 716 coupled to the high-speed interface 708. In otherimplementations, multiple processors and/or multiple buses may be used,as appropriate, along with multiple memories and types of memory. Also,multiple computing devices may be connected, with each device providingportions of the necessary operations (e.g., as a server bank, a group ofblade servers, or a multi-processor system).

The memory 704 stores information within the computing device 700. Insome implementations, the memory 704 is a volatile memory unit or units.In some implementations, the memory 704 is a non-volatile memory unit orunits. The memory 704 may also be another form of computer-readablemedium, such as a magnetic or optical disk.

The storage device 706 is capable of providing mass storage for thecomputing device 700. In some implementations, the storage device 706may be or contain a computer-readable medium, such as a floppy diskdevice, a hard disk device, an optical disk device, or a tape device, aflash memory or other similar solid state memory device, or an array ofdevices, including devices in a storage area network or otherconfigurations. Instructions can be stored in an information carrier.The instructions, when executed by one or more processing devices (forexample, processor 702), perform one or more methods, such as thosedescribed above. The instructions can also be stored by one or morestorage devices such as computer- or machine-readable mediums (forexample, the memory 704, the storage device 706, or memory on theprocessor 702).

The high-speed interface 708 manages bandwidth-intensive operations forthe computing device 700, while the low-speed interface 712 manageslower bandwidth-intensive operations. Such allocation of functions is anexample only. In some implementations, the high-speed interface 708 iscoupled to the memory 704, the display 716 (e.g., through a graphicsprocessor or accelerator), and to the high-speed expansion ports 710,which may accept various expansion cards (not shown). In theimplementation, the low-speed interface 712 is coupled to the storagedevice 706 and the low-speed expansion port 714. The low-speed expansionport 714, which may include various communication ports (e.g., USB,Bluetooth, Ethernet, wireless Ethernet) may be coupled to one or moreinput/output devices, such as a keyboard, a pointing device, a scanner,or a networking device such as a switch or router, e.g., through anetwork adapter.

The computing device 700 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 720, or multiple times in a group of such servers. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 722. It may also be implemented as part of a rack server system724. Alternatively, components from the computing device 700 may becombined with other components in a mobile device (not shown), such as amobile computing device 750. Each of such devices may contain one ormore of the computing device 700 and the mobile computing device 750,and an entire system may be made up of multiple computing devicescommunicating with each other.

The mobile computing device 750 includes a processor 752, a memory 764,an input/output device such as a display 754, a communication interface766, and a transceiver 768, among other components. The mobile computingdevice 750 may also be provided with a storage device, such as amicro-drive or other device, to provide additional storage. Each of theprocessor 752, the memory 764, the display 754, the communicationinterface 766, and the transceiver 768, are interconnected using variousbuses, and several of the components may be mounted on a commonmotherboard or in other manners as appropriate.

The processor 752 can execute instructions within the mobile computingdevice 750, including instructions stored in the memory 764. Theprocessor 752 may be implemented as a chipset of chips that includeseparate and multiple analog and digital processors. The processor 752may provide, for example, for coordination of the other components ofthe mobile computing device 750, such as control of user interfaces,applications run by the mobile computing device 750, and wirelesscommunication by the mobile computing device 750.

The processor 752 may communicate with a user through a controlinterface 758 and a display interface 756 coupled to the display 754.The display 754 may be, for example, a TFT (Thin-Film-Transistor LiquidCrystal Display) display or an OLED (Organic Light Emitting Diode)display, or other appropriate display technology. The display interface756 may comprise appropriate circuitry for driving the display 754 topresent graphical and other information to a user. The control interface758 may receive commands from a user and convert them for submission tothe processor 752. In addition, an external interface 762 may providecommunication with the processor 752, so as to enable near areacommunication of the mobile computing device 750 with other devices. Theexternal interface 762 may provide, for example, for wired communicationin some implementations, or for wireless communication in otherimplementations, and multiple interfaces may also be used.

The memory 764 stores information within the mobile computing device750. The memory 764 can be implemented as one or more of acomputer-readable medium or media, a volatile memory unit or units, or anon-volatile memory unit or units. An expansion memory 774 may also beprovided and connected to the mobile computing device 750 through anexpansion interface 772, which may include, for example, a SIMM (SingleIn Line Memory Module) card interface. The expansion memory 774 mayprovide extra storage space for the mobile computing device 750, or mayalso store applications or other information for the mobile computingdevice 750. Specifically, the expansion memory 774 may includeinstructions to carry out or supplement the processes described above,and may include secure information also. Thus, for example, theexpansion memory 774 may be provide as a security module for the mobilecomputing device 750, and may be programmed with instructions thatpermit secure use of the mobile computing device 750. In addition,secure applications may be provided via the SIMM cards, along withadditional information, such as placing identifying information on theSIMM card in an obfuscated or encrypted manner.

The memory may include, for example, flash memory and/or NVRAM memory(non-volatile random access memory), as discussed below. In someimplementations, instructions are stored in an information carrier. Theinstructions, when executed by one or more processing devices (forexample, processor 752), can perform one or more methods, such as thosedescribed above. The instructions can also be stored by one or morestorage devices, such as one or more computer or machine-readablemediums (for example, the memory 764, the expansion memory 774, ormemory on the processor 752). In some implementations, the instructionscan be received in a propagated signal, for example, over thetransceiver 768 or the external interface 762.

The mobile computing device 750 may communicate wirelessly through thecommunication interface 766, which may include digital signal processingcircuitry where necessary. The communication interface 766 may providefor communications under various modes or protocols, such as GSM voicecalls (Global System for Mobile communications), SMS (Short MessageService), EMS (Enhanced Messaging Service), or MMS messaging (MultimediaMessaging Service), CDMA (code division multiple access), TDMA (timedivision multiple access), PDC (Personal Digital Cellular), WCDMA(Wideband Code Division Multiple Access), CDMA2000, GPRS (General PacketRadio Service), or WAN (Wide Area Network), among others. Suchcommunication may occur, for example, through the transceiver 768 usinga radio-frequency. In addition, short-range communication may occur,such as using a Bluetooth, WiFi, or other such transceiver (not shown).In addition, a GPS (Global Positioning System) receiver module 770 mayprovide additional navigation- and location-related wireless data to themobile computing device 750, which may be used as appropriate byapplications running on the mobile computing device 750.

The mobile computing device 750 may also communicate audibly using anaudio codec 760, which may receive spoken information from a user andconvert it to usable digital information. The audio codec 760 maylikewise generate audible sound for a user, such as through a speaker,e.g., in a handset of the mobile computing device 750. Such sound mayinclude sound from voice telephone calls, may include recorded sound(e.g., voice messages, music files, etc.) and may also include soundgenerated by applications operating on the mobile computing device 750.

The mobile computing device 750 may be implemented in a number ofdifferent forms, as shown in the figure. For example, it may beimplemented as a cellular telephone 780. It may also be implemented aspart of a smart-phone 782, personal digital assistant, or other similarmobile device.

Various implementations of the systems and techniques described here canbe realized in digital electronic circuitry, integrated circuitry,specially designed ASICs (application specific integrated circuits),computer hardware, firmware, software, and/or combinations thereof.These various implementations can include implementation in one or morecomputer programs that are executable and/or interpretable on aprogrammable system including at least one programmable processor, whichmay be special or general purpose, coupled to receive data andinstructions from, and to transmit data and instructions to, a storagesystem, at least one input device, and at least one output device. Thesecomputer programs (also known as programs, software, softwareapplications or code) include machine instructions for a programmableprocessor, and can be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms machine-readable medium andcomputer-readable medium refer to any computer program product,apparatus and/or device (e.g., magnetic discs, optical disks, memory,Programmable Logic Devices (PLDs)) used to provide machine instructionsand/or data to a programmable processor, including a machine-readablemedium that receives machine instructions as a machine-readable signal.The term machine-readable signal refers to any signal used to providemachine instructions and/or data to a programmable processor.

To provide for interaction with a user, the systems and techniquesdescribed here can be implemented on a computer having a display device(e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor)for displaying information to the user and a keyboard and a pointingdevice (e.g., a mouse or a trackball) by which the user can provideinput to the computer. Other kinds of devices can be used to provide forinteraction with a user as well; for example, feedback provided to theuser can be any form of sensory feedback (e.g., visual feedback,auditory feedback, or tactile feedback); and input from the user can bereceived in any form, including acoustic, speech, or tactile input.

The systems and techniques described here can be implemented in acomputing system that includes a back end component (e.g., as a dataserver), or that includes a middleware component (e.g., an applicationserver), or that includes a front end component (e.g., a client computerhaving a graphical user interface or a Web browser through which a usercan interact with an implementation of the systems and techniquesdescribed here), or any combination of such back end, middleware, orfront end components. The components of the system can be interconnectedby any form or medium of digital data communication (e.g., acommunication network). Examples of communication networks include alocal area network (LAN), a wide area network (WAN), and the Internet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

While certain implementations have been described, other implementationsare possible.

While we described expiring commodities in the context of food, expiringcommodities exist in a number of other contexts.

While we described the computing device as including a transceiver thatallows the computer device to communicate wirelessly with a network, insome implementations, the computing device can communicate with anetwork through a wired connection. For example, the computing devicecan be hardwired to the Internet through a router and/or a modem.

In some implementations, the expiring commodity is a travel ticket. Forexample, airline tickets, train tickets, ferry tickets, and bus ticketsare no longer useful after the trip occurs. As such, as the departuredate approaches, a travel business may choose to reduce the price oftickets to motivate consumers to purchase them. Otherwise, the travelbusiness takes the risk of the seat being unused.

In some implementations, the expiring commodity is a room of anestablishment that provides lodging, such as a hotel. For example, insome cases, hotels are not completely booked for a given night. A hoteldoes not receive any payment for unused rooms. As the day progresses, ahotel may choose to reduce the price of a room to motivate guests torent the room. Otherwise, the hotel takes the risk of the room beingunused.

In some implementations, the expiring commodity is an entertainmentticket. For example, theater tickets, concert tickets, sporting eventtickets, and movie tickets are no longer useful after the entertainmentevent occurs. As such, as the date of the event approaches, anentertainment business may choose to reduce the price of tickets tomotivate consumers to purchase them. In some implementations, theentertainment business may allow a consumer to “line skip” uponpurchasing a ticket.

In some implementations, the expiring commodity is a dining reservation.For example, a reservation at a popular restaurant may be available fora particular time. It may be extremely difficult to get a reservation atthe particular restaurant. As such, as the available time approaches,the restaurant may offer the reservation to consumers for a fixedpremium cost.

In some implementations, the expiring commodity is a high demandcommodity. In other words, consumer may be willing to pay face value ormore than the face value for the expiring commodity. For example, in thecontext of movie tickets, tickets for a movie premiere may be in highdemand. A movie theater can offer to sell tickets to the premiere forface value plus a premium handling fee for access to the high demandevent.

In some implementations, high demand commodities that have a limitedquantity are randomly offered to consumers who have defined purchasepreferences that match the offer for sale. In some implementations, someconsumers have higher prioritization than others.

In some implementations, the expiring commodity is a retail item. Forexample, clothing prior to a change of seasons, electronics prior to anew generation being released, and vehicles prior to a model change havediminished value from a consumer's point of view. A typical consumer mayprefer to wait to purchase the newer version of the particular item. Assuch, as the weather changes or as the release date approaches, abusiness may choose to reduce the price of the retail items to motivatecustomers to purchase them.

In some implementations, rather than the Matching Engine comparingoffers for sale to purchase preferences in order to identify targetedconsumers, the Matching Engine uses information gathered by a trollalgorithm and compares the gathered information to purchase preferencesof consumers. The troll algorithm can scan information on retailers'websites to obtain information related to various commodities. In someimplementations, if the retailer associated with a particular website isrunning a promotion, the troll algorithm considers the promotion todetermine commodity pricing. The Matching Engine can use the commoditypricing information from the troll algorithm to identify targetedconsumers.

While this specification contains many specifics, these should not beconstrued as limitations on the scope of the invention or of what may beclaimed, but rather as descriptions of features specific to particularimplementations of the invention. Certain features that are described inthis specification in the context of separate implementations can alsobe implemented in combination in a single implementation. Conversely,various features that are described in the context of a singleimplementation can also be implemented in multiple implementationsseparately or in any suitable subcombination. Moreover, althoughfeatures may be described above as acting in certain combinations andeven initially claimed as such, one or more features from a claimedcombination can in some cases be excised from the combination, and theclaimed combination may be directed to a subcombination or variation ofa subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the implementations described above should not beunderstood as requiring such separation in all implementations, and itshould be understood that the described program components and systemscan generally be integrated together in a single software product orpackaged into multiple software products.

Thus, particular implementations of the invention have been described.Other implementations are within the scope of the following claims. Forexample, the actions recited in the claims can be performed in adifferent order and still achieve desirable results.

What is claimed is:
 1. A computer-implemented method comprising:receiving, on a server, an offer for sale from a computing devicerelated to a retailer, the offer for sale including a description of anexpiring commodity and a discounted price of the expiring commodity;identifying, by the server, one or more consumers as targeted consumersby comparing the offer for sale with purchase preferences previouslyprovided by consumers; sending, from the server, a currently unsolicitednotification to a computing device related to at least one of thetargeted consumers, the currently unsolicited notification includinginformation related to the offer for sale; and receiving, on the server,from the computing device related to the targeted consumer, a purchaseindication related to the expiring commodity.
 2. The method of claim 1,wherein at least one of the computing device related to the retailer andthe computing device related to the targeted consumer is locatedremotely from the server.
 3. The method of claim 1, wherein the offerfor sale includes a regular price of the expiring commodity.
 4. Themethod of claim 1, wherein each of the purchase preferences includes anexpiring commodity and a value threshold.
 5. The method of claim 4,wherein comparing the offer for sale with purchase preferences of theone or more consumers includes determining whether: the expiringcommodity of the offer for sale matches the expiring commodity of eachof the purchase preferences; and the discounted price of the offer forsale satisfies the value threshold of each of the purchase preferences.6. The method of claim 1, wherein one or more of the purchasepreferences includes a particular retailer.
 7. The method of claim 6,wherein comparing the offer for sale with purchase preferences of theone or more consumers includes determining whether the retailerassociated with the offer for sale matches the particular retailer ofthe one or more purchase preferences.
 8. The method of claim 1, whereinthe currently unsolicited notification includes one or more of a name ofthe retailer, an address of the retailer, the description of theexpiring commodity, the discounted price of the expiring commodity, aregular price of the expiring commodity, and a quantity field.
 9. Themethod of claim 1, wherein the currently unsolicited notificationincludes a purchase code related to a consumer preference.
 10. Themethod of claim 1, wherein the currently unsolicited notificationincludes a countdown timer that represents a time limit for the targetedcustomer to send the purchase indication.
 11. The method of claim 10,wherein the countdown timer can be temporarily frozen one or more times.12. The method of claim 11, wherein a credit is provided in order totemporarily freeze the countdown timer.
 13. The method of claim 1,wherein the purchase indication is provided by a message from thetargeted consumer.
 14. The method of claim 1, further comprisingupdating the discounted price of the expiring commodity.
 15. The methodof claim 14, wherein the discounted price of the expiring commodity isupdated based on an expiration date of the expiring commodity.
 16. Themethod of claim 1, wherein the expiring commodity is edible.
 17. Themethod of claim 1, wherein the expiring commodity is a material item.18. The method of claim 17, wherein the expiring commodity is a piece ofclothing, an electronic item, or a vehicle.
 19. The method of claim 1,wherein the expiring commodity is a non-edible, non-material item. 20.The method of claim 19, wherein the expiring commodity is a virtualcommodity.
 21. The method of claim 20, wherein the virtual commodity issoftware.
 22. The method of claim 1, wherein the expiring commodity is alocation that provides lodging.
 23. The method of claim 22, wherein thelocation that provides lodging is a hotel MOM.
 24. The method of claim1, wherein the expiring commodity is a ticket.
 25. The method of claim24, wherein the ticket is a travel ticket.
 26. The method of claim 25,wherein the travel ticket is an airline ticket, a train ticket, a ferryticket, or a bus ticket.
 27. The method of claim 24, wherein the ticketis an entertainment event ticket.
 28. The method of claim 27, whereinthe entertainment event ticket is a theater ticket, a concert ticket, asporting even ticket, or a movie ticket.
 29. The method of claim 1,wherein the expiring commodity is a reservation for food consumption orentertainment.
 30. The method of claim 29, wherein the reservation is adining reservation.
 31. The method of claim 1, wherein the currentlyunsolicited notification is a push notification.
 32. The method of claim1, wherein at least one of the computing device related to the retailerand the computing device related to the targeted consumer is asmartphone.
 33. The method of claim 1, wherein the currently unsolicitednotification is only sent to computing devices related to targetedconsumers who are specified in the offer for sale.
 34. The method ofclaim 1, wherein the currently unsolicited notification is only sent tocomputing devices related to targeted consumers whose purchasepreferences have identified the retailer as an approved retailer. 35.The method of claim 1, wherein the currently unsolicited notification isnot sent to computing devices related to targeted consumers whosepurchase preferences have identified the retailer as a blocked retailer.36. The method of claim 1, further comprising: receiving, on the server,from the computing device related to the retailer, information relatedto one or more expiring commodities that the retailer has previouslysold, has in-stock, or intends to purchase.
 37. The method of claim 1,further comprising: receiving, on the server, from the computing devicerelated to the retailer, information related to past, existing, orprospective customers of the retailer.
 38. A system comprising: a servercomprising: a memory configured to store instructions; and a processorto execute the instructions to perform a method comprising: receiving,on the server, an offer for sale from a computing device related to aretailer, the offer for sale including a description of an expiringcommodity and a discounted price of the expiring commodity; identifying,by the server, one or more consumers as targeted consumers by comparingthe offer for sale with purchase preferences previously provided byconsumers; sending, from the server, a currently unsolicitednotification to a computing device related to at least one of thetargeted consumers, the currently unsolicited notification includinginformation related to the offer for sale; and receiving, on the server,from the computing device related to the targeted consumer, a purchaseindication related to the expiring commodity.
 39. The system of claim38, further comprising a matching engine that resides on the server, thematching engine configured to determine whether: the expiring commodityof the offer for sale matches the expiring commodity of each of thepurchase preferences; and the discounted price of the offer for salesatisfies the value threshold of each of the purchase preferences. 40.The system of claim 38, further comprising a pricing engine that resideson the server, the pricing engine configured to update the discountedprice of the expiring commodity.
 41. The system of claim 40, wherein thepricing engine considers data related to one or more of foreign exchangemarket trends, financial market trends, economic trends, news andevents, regional and sub-regional trends, global trends, commoditypricing, commodity quality, nature dependent analysis, specific sales bybusiness, calendar based holidays/events, religious trends, culturaltrends, commodity demand, inventory, custom business-specifiedvalidation, custom business-specified rules, commodity pricing history,commodity purchase history, and sentiment analysis.
 42. The system ofclaim 41, further comprising multiple instances of the pricing engine,wherein the multiple instances of the pricing engine are configured tocommunicate with each other and share information.
 43. The system ofclaim 42, wherein no two instances of the pricing engine consider anexact same set of data.
 44. The system of claim 40, wherein thediscounted price of the expiring commodity is updated based on anexpiration date of the expiring commodity.
 45. A computer programproduct tangibly embodied in an information carrier and comprisinginstructions that when executed by a processor perform a methodcomprising: receiving, on a server, an offer for sale from a computingdevice related to a retailer, the offer for sale including a descriptionof an expiring commodity and a discounted price of the expiringcommodity; identifying, by the server, one or more consumers as targetedconsumers by comparing the offer for sale with purchase preferencespreviously provided by consumers; sending, from the server, a currentlyunsolicited notification to a computing device related to at least oneof the targeted consumers, the currently unsolicited notificationincluding information related to the offer for sale; and receiving, onthe server, from the computing device related to the targeted consumer,a purchase indication related to the expiring commodity.